Many companies and other organizations operate computer networks that interconnect numerous computing systems to support their operations, such as with the computing systems being co-located (e.g., as part of a local network) or instead located in multiple distinct geographical locations (e.g., connected via one or more private or public intermediate networks). For example, data centers housing significant numbers of interconnected computing systems have become commonplace, such as private data centers that are operated by and on behalf of a single organization, and public data centers that are operated by entities as businesses to provide computing resources to customers. Some public data center operators provide network access, power, and secure installation facilities for hardware owned by various customers, while other public data center operators provide “full service” facilities that also include hardware resources made available for use by their customers.
Some large cloud-based provider networks implement a number of network-accessible services, including virtual computing services that can be used to implement a variety of applications. For example, a customer of a virtual computing service may request the allocation of some number of guest virtual machines (also known as compute instances) with specified performance capacities, and configure the guest virtual machines as web servers, application servers, database servers and the like to set up a multi-tier web-based application. A number of additional services of the provider network may be utilized for various components of complex applications, such as database services, storage services and the like.
Some services of a provider network may utilize components of other services to accomplish commonly-used patterns or sequences of tasks. For example, for certain types of applications (such as web-based applications written in popular languages such as Ruby, PHP, or Java™), application deployment workflows can be largely or fully automated using a provider network's deployment service. If a customer of the deployment service provides sufficient configuration metadata and a collection of source or executable files, the deployment service may be able to allocate and configure the appropriate resources of computing, storage and networking services needed to bring the application online. In some cases, the service may also be able to monitor the performance of the application and add or remove resources as needed based on workload changes. From the perspective of the application developers, however, some of the mechanisms that are typically available to communicate with an application deployment service may be somewhat cumbersome. Especially in agile software development organizations with fast code development rates and large numbers of developers, the communication mechanisms of a deployment service may sometimes limit productivity.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.